#include <stdio.h>
#include <stdlib.h>

typedef struct ArrNode *ArrPtr;
struct ArrNode {
    int *data; /*存储数据的数组*/
    int size; /*数组的大小*/
};

/* 算法1-1：求数组与整数乘积的最大值 MaxProduct1(array, m) */
int MaxProduct1(ArrPtr array, int m) {
    int i, n, p, max_p;

    max_p = 0;
    n = array->size;
    for (i = 0; i < n; i++) {
        p = array->data[i] * m; /* 计算每个元素与m的乘积 */
        if (p > max_p) { /* 如果当前乘积更大 */
            max_p = p; /* 更新最大值 */
        }
    }
    return max_p;
}
/* 算法1-1 结束 */

int main(void) {
    int i, n, m;
    ArrPtr array;

    array = (ArrPtr)malloc(sizeof(struct ArrNode));
    scanf("%d %d", &n, &m);
    array->size = n;
    array->data = (int *)malloc(sizeof(int) * array->size);
    for (i = 0; i < n; i++) {
        scanf("%d", &array->data[i]);
    }
    printf("%d\n", MaxProduct1(array, m));
    return 0;
}